package image;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;

/**
 *
 * 切割图片类
 * @author zhangjunfei
 * @date 2021/12/13 10:48
 */
public class ReadPicNum1 {




    private static final String IMAGE_FILE_PATH = "D:\\Pic\\1.jpg";

    //横向分隔个数

    private static final int SEP_X_NUM = 1;

    //纵向分隔个数

    private static final int SEP_Y_NUM = 3;

    public static void main(String[] args) throws Exception {

       cutPic();

    }

    public static String cutPic() throws Exception {

        File file = new File(IMAGE_FILE_PATH);

        if (!file.exists() || !file.isFile()) {

            throw new RuntimeException("file not exists or un-file:" + IMAGE_FILE_PATH);

        }

        BufferedImage image = ImageIO.read(file);

        int totalWidth = image.getWidth();

        int totalHeight = image.getHeight();

        int width = totalWidth / SEP_X_NUM;

        int height = totalHeight / SEP_Y_NUM;

        File dirFile = new File(file.getParent(), file.getName().substring(0, file.getName().lastIndexOf(".")));

        if (!dirFile.exists()) {

            dirFile.mkdir();

        }

        for (int y = 0, j = 1; y <= totalHeight - height; y += height, j++) {

            for (int x = 0, i = 1; x <= totalWidth - width; x += width, i++) {

                File targetFile = new File(dirFile, j + "_" + i + ".jpg");

                BufferedImage targetImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

                Graphics g = targetImage.getGraphics();

                g.drawImage(image.getSubimage(x, y, width, height), 0, 0, null);

                ImageIO.write(targetImage, "JPG", targetFile);

            }

        }

        return dirFile.getPath();

    }


}
